package com.briup.jdk8.day03;

import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.Stream;

/**
 * Stream和其他数据类型的互相转换
 */
public class Test1 {
    public static void main(String[] args) {
        // 使用多个值创建Stream
        Stream<String> stream1 = Stream.of("hello", "world", "java", "python");
        // 使用数组创建Stream
        String[] strings = {"hello", "world", "java", "python"};
        Stream<String> stream2 = Stream.of(strings);
        Stream<String> stream3 = Arrays.stream(strings);
        // 使用集合创建Stream
        List<String> list = new ArrayList<>();
        Set<String> set  = new HashSet<>();
        Stream<String> stream4 = list.stream();
        Stream<String> stream5 = set.stream();

        // 基本数据类型int、long、double的处理
        IntStream intStream = IntStream.of(3,6,2,6,4);
        // 左闭右开
        IntStream intStream1 = IntStream.range(1,11);
        // 闭区间
        IntStream intStream2 = IntStream.rangeClosed(10,20);

/*
        // 以stream1为例
        // 一个Stream对象只能使用一次
        // 当Stream执行过最终操作的时候，就代表使用完毕了。
        // Stream转数组
        Object[] array = stream1.toArray();
        String[] array1 = stream1.toArray(String[]::new);
        // Stream转集合
        // 默认为ArrayList
        List<String> l1 = stream1.collect(Collectors.toList());
        // 默认为HashSet
        Set<String> l2 = stream1.collect(Collectors.toSet());
        // 收集为一个自定义的集合
        LinkedHashSet<String> l3 = stream1.collect(Collectors.toCollection(LinkedHashSet::new));
*/
        // Stream转字符串
        String collect = stream1.collect(Collectors.joining("-","briup_","_01"));
        System.out.println(collect);
    }
}
